home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
START Magazine
/
START VOL 3 NO 7.st
/
DAHDIT.ARC
/
DAHDIT.LST
next >
Encoding:
Amiga
Atari
Commodore
DOS
FM Towns/JPY
Macintosh
Macintosh JP
NeXTSTEP
RISC OS/Acorn
UTF-8
Wrap
File List
|
1988-11-10
|
41.7 KB
|
1,534 lines
Rem ***********************************************************************
Rem * *
Rem * DAH - DITTER *
Rem * Morse Code Trainer Program *
Rem * by *
Rem * Sal Gutierrez *
Rem * *
Rem * Copyright 1988 Antic Publishing Inc. *
Rem * *
Rem ***********************************************************************
Rem
Orig_color0%=Xbios(7,0,-1)
Orig_color1%=Xbios(7,1,-1)
Orig_color2%=Xbios(7,2,-1)
Orig_color3%=Xbios(7,3,-1)
Deftext 1,0,0,4
Selected%=1
Msg_num%=0
Deffn Status(Object%)=Dpeek(Config_adr+Object%*24+10)
Dim Message$(6)
Dim A$(40)
Dim A%(64,6),Rate_table(4),Delay_table(4,4),Custom_flag(4,4)
Dim Buffer%(60)
Res%=Xbios(4)
If Res%=0
Alert 1,"You must be in medium|or high res to run|Dah-ditter.",1,"Ok",D
Endif
'
Title_screen$="DAHDIT.PI"+Str$(Res%+1)
Rsrc$="DAHDIT"+Str$(Res%+1)+".RSC"
If (Not Exist(Title_screen$)) Or (Not Exist(Rsrc$))
A$=Title_screen$+" and "+Rsrc$
Alert 1,A$+"|must be in the same directory as DAHDIT.PRG.",1,"Abort",D
End
Endif
For I%=0 To 4
Read Rate
Rate_table(I%)=Rate
Next I%
For I%=0 To 4
For J%=0 To 4
Read Delay,Flag
Delay_table(I%,J%)=Delay
Custom_flag(I%,J%)=Flag
Next J%
Next I%
For Char%=0 To 64
Element%=0
Repeat
Read Info%
A%(Char%,Element%)=Info%
Inc Element%
Until Info%=0
Next Char%
About%=0
Config%=1
Morse_table%=2
Help%=3
Word5%=3
Word10%=4
Word15%=5
Word20%=6
Word25%=7
Char5%=10
Char10%=11
Char15%=12
Char20%=13
Char25%=14
Lttrs%=17
Symbols%=18
Numbers%=19
Mixed%=20
Pure%=23
Custom%=24
From_a%=27
From_z%=52
From_0%=54
From_9%=63
From_ques%=65
From_slash%=71
To_a%=74
To_z%=99
To_0%=101
To_9%=110
To_ques%=112
To_slash%=118
Abort%=119
Proceed%=120
Help_abort%=2
Help_prev%=3
Help_next%=4
Wordspeed%=Word5%
Charspeed%=Char5%
Prac_input%=Lttrs%
Code_output%=Pure%
From_lttr%=From_a%
From_number%=From_0%
From_symbol%=From_ques%
To_lttr%=To_z%
To_number%=To_9%
To_symbol%=To_slash%
Lttr_seed%=33
Lttr_rng%=26
Rate=11
Delay=Rate
Cust_flag%=0
Mess_new%=1
Mess_edit%=0
Data 11,5.7,3.9,2.9,2
Data 11,0,0,0,0,0,0,0,0,0,26.5,1,5.7,0,0,0,0,0,0,0,32.6,1,11.8,0,3.9,0,0,0,0,0
Data 35.5,1,14,1,7,0,2.9,0,0,0,36,1,14.8,1,7.6,1,4,0,2,0
Rem
Rem **********************************************************************
Rem * MAIN PROGRAM *
Rem **********************************************************************
Rem
Gosub Rsrc_init
Gosub Help_init
Gosub Screen
Gosub Menu_init
On Menu Gosub Selection
Do
On Menu
Loop
Rem
Rem **********************************************************************
Rem * SCREEN DRAW *
Rem **********************************************************************
Rem
Procedure Screen
Hidem
Open "I",#1,Title_screen$
Y=Inp(#1)
X=Inp(#1)
For I=0 To 15
X=Inp(#1)
Y=Inp(#1)
Z=X*256+Y
C=Xbios(7,I,Z)
Next I
Seek #1,34
Bget #1,Xbios(2),32000
Close #1
Showm
Return
Rem
Rem **********************************************************************
Rem * CHARACTER DATA *
Rem **********************************************************************
Rem
Data 0,0,0,0,0,0,0,0,1,1,3,3,1,3,0,3,1,3,3,1,3,0,0,0,3,3,1,1,3,3,0
Data 3,1,1,1,1,3,0,1,3,1,3,1,3,0,3,1,1,3,1,0,3,3,3,3,3,0,1,3,3,3,3,0
Data 1,1,3,3,3,0,1,1,1,3,3,0,1,1,1,1,3,0,1,1,1,1,1,0,3,1,1,1,1,0,3,3,1,1,1,0
Data 3,3,3,1,1,0,3,3,3,3,1,0,0,0,0,0,0,1,1,3,3,1,1,0,0,1,3,0,3,1,1,1,0
Data 3,1,3,1,0,3,1,1,0,1,0,1,1,3,1,0,3,3,1,0,1,1,1,1,0,1,1,0,1,3,3,3,0
Data 3,1,3,0,1,3,1,1,0,3,3,0,3,1,0,3,3,3,0,1,3,3,1,0,3,3,1,3,0,1,3,1,0
Data 1,1,1,0,3,0,1,1,3,0,1,1,1,3,0,1,3,3,0,3,1,1,3,0,3,1,3,3,0,3,3,1,1,0
Data 0,0,0,0,0,0
Rem
Rem **********************************************************************
Rem * MENU INITIALIZE *
Rem **********************************************************************
Rem
Procedure Menu_init
A$(0)=" Desk "
A$(1)=" About Dah-Ditter "
A$(2)="----------------------"
A$(3)="1"
A$(4)="2"
A$(5)="3"
A$(6)="4"
A$(7)="5"
A$(8)="6"
A$(9)=""
A$(10)=" File "
A$(11)=" Load Discourse "
A$(12)=" Save Discourse "
A$(13)="------------------"
A$(14)=" Quit "
A$(15)=""
A$(16)=" Discourses "
A$(17)=" Erase All "
A$(18)="-----------------"
A$(19)=" Build New "
A$(20)=" Edit Existing "
A$(21)=""
A$(22)=" Traffic "
A$(23)=" Set Parameters "
A$(24)="---------------------"
A$(25)=" Receive Discourse "
A$(26)=" Random Groupings "
A$(27)=" Key Practice "
A$(28)=""
A$(29)=" Hamming "
A$(30)=" Morse Code "
A$(31)=" Q Signals "
A$(32)=" RST System "
A$(33)=" Abbreviations "
A$(34)=""
A$(35)=""
Menu A$()
Return
Rem
Rem **********************************************************************
Rem * RSRC INITIALIZE *
Rem **********************************************************************
Rem
Procedure Rsrc_init
Gosub Aes_cont(110,0,1,1,0)
Lpoke Addrin,Varptr(Rsrc$)
Gemsys
Gosub Aes_cont(112,2,1,0,1)
Gosub Aes_gint(0,0,About%,0,0,0)
Gemsys
About_adr=Lpeek(Addrout)
Gosub Aes_gint(0,0,Config%,0,0,0)
Gemsys
Config_adr=Lpeek(Addrout)
Gosub Aes_gint(0,0,Morse_table%,0,0,0)
Gemsys
Morse_table_adr=Lpeek(Addrout)
Gosub Aes_gint(0,0,Help%,0,0,0)
Gemsys
Help_adr=Lpeek(Addrout)
Return
Rem
Rem **********************************************************************
Rem * AES CONTROL *
Rem **********************************************************************
Rem
Procedure Aes_cont(Var1,Var2,Var3,Var4,Var5)
Dpoke Gcontrl,Var1
Dpoke Gcontrl+2,Var2
Dpoke Gcontrl+4,Var3
Dpoke Gcontrl+6,Var4
Dpoke Gcontrl+8,Var5
Return
Rem
Rem **********************************************************************
Rem * AES GINTIN *
Rem **********************************************************************
Rem
Procedure Aes_gint(Offset,Var1,Var2,Var3,Var4,Var5)
Dpoke Gintin+Offset,Var1
Dpoke Gintin+2+Offset,Var2
Dpoke Gintin+4+Offset,Var3
Dpoke Gintin+6+Offset,Var4
Dpoke Gintin+8+Offset,Var5
Return
Rem
Rem **********************************************************************
Rem * HANDLE DIALOG 1 *
Rem **********************************************************************
Rem
Procedure Handle_dialog_1(Tree,Start_ob)
Sget Screen$
Gosub Aes_cont(54,0,5,1,0) ! form_center
Lpoke Addrin,Tree
Gemsys
Fx=Dpeek(Gintout+2)
Fy=Dpeek(Gintout+4)
Fw=Dpeek(Gintout+6)
Fh=Dpeek(Gintout+8)
Gosub Aes_cont(51,9,1,0,0) ! form_dial(0)
Gosub Aes_gint(0,0,0,0,0,0)
Gosub Aes_gint(10,Fx,Fy,Fw,Fh,0)
Gemsys
Gosub Aes_gint(0,1,0,0,0,0) ! form_dial(1)
Gemsys
Gosub Aes_cont(42,6,1,1,0) ! objc_draw
Gosub Aes_gint(0,0,3,Fx,Fy,Fw)
Gosub Aes_gint(10,Fh,0,0,0,0)
Gemsys
Return
Rem
Rem **********************************************************************
Rem * HANDLE DIALOG 2 *
Rem **********************************************************************
Rem
Procedure Handle_dialog_2(Tree,Start_ob,Redraw%)
Gosub Aes_cont(50,1,1,1,0) ! form_do
Gosub Aes_gint(0,Start_ob,0,0,0,0)
Lpoke Addrin,Tree
Gemsys
Clicked%=Dpeek(Gintout)
Gosub Aes_cont(47,8,1,1,0) ! objc_change
Gosub Aes_gint(0,Clicked%,0,Fx,Fy,Fw)
Gosub Aes_gint(10,Fh,0,0,0,0)
Gemsys
If Redraw%
Gosub Aes_cont(42,6,1,1,0) ! objc_draw
Gosub Aes_gint(0,0,3,Fx,Fy,Fw)
Gosub Aes_gint(10,Fh,0,0,0,0)
Gemsys
Redraw%=0
Endif
Return
Rem
Rem **********************************************************************
Rem * HANDLE DIALOG 3 *
Rem **********************************************************************
Rem
Procedure Handle_dialog_3
Gosub Aes_cont(51,9,1,0,0) ! form_dial(2)
Gosub Aes_gint(0,2,0,0,0,0)
Gosub Aes_gint(10,Fx,Fy,Fw,Fh,0)
Gemsys
Gosub Aes_gint(0,3,0,0,0,0) ! form_dial(3)
Gemsys
Sput Screen$
Return
Rem
Rem **********************************************************************
Rem * STATE SELECT *
Rem **********************************************************************
Rem
Procedure State_sel(Start%,Finish%,P.var)
For I%=Start% To Finish%
Temp%=Fn Status(I%)
If (Temp% And Selected%)=1
*P.var=I%
Endif
Next I%
Return
Rem
Rem **********************************************************************
Rem * RESET STATES *
Rem **********************************************************************
Rem
Procedure Reset_state(Clr_object%,Set_object%)
Dpoke (Config_adr+Clr_object%*24+10),0
Dpoke (Config_adr+Set_object%*24+10),1
Return
Rem **********************************************************************
Rem * SELECTION *
Rem **********************************************************************
Rem
Procedure Selection
Rem
Rem ----------------------------------- About Dah-Ditter ----------------
Rem
If A$(Menu(0))=A$(1)
Old_color_2=Xbios(7,2,-1)
Setcolor 2,4,5,6
Gosub Handle_dialog_1(About_adr,0)
Gosub Handle_dialog_2(About_adr,0,0)
Gosub Handle_dialog_3
Void Xbios(7,2,Old_color_2)
Endif
Rem
Rem ----------------------------------- Load Discourse ------------------
Rem
If A$(Menu(0))=A$(11)
Start_load:
Fileselect "\*.dis","",File$
If File$=""
Goto Finish_load
Endif
If Exist(File$)=-1
Open "I",#1,File$
Input #1,Msg_num%
For I%=1 To Msg_num%
Input #1,Message$(I%)
Next I%
Close #1
Else
Alert 1,"|File does not exist.",1," OK ",Dummy
Goto Start_load
Endif
Finish_load:
Endif
Rem
Rem ----------------------------------- Save Discourse ------------------
Rem
If A$(Menu(0))=A$(12)
If Msg_num%=0
Alert 1,"|No Discourse to Save.",1," OK ",Dummy
Goto Finish_save
Endif
Fileselect "\*.dis","",File$
File$=File$+".dis"
Open "O",#1,File$
Write #1,Msg_num%
For I%=1 To Msg_num%
Write #1,Message$(I%)
Next I%
Close #1
Finish_save:
Endif
Rem
Rem ----------------------------------- Quit ----------------------------
Rem
If A$(Menu(0))=A$(14)
Void Xbios(7,0,Orig_color0%)
Void Xbios(7,1,Orig_color1%)
Void Xbios(7,2,Orig_color2%)
Void Xbios(7,3,Orig_color3%)
Menu Kill
Gosub Aes_cont(111,0,1,0,0)
Gemsys
End
Endif
Rem
Rem ----------------------------------- Erase All -----------------------
Rem
If A$(Menu(0))=A$(17)
Msg_num%=0
For I%=1 To 5
Message$(I%)=""
Next I%
Endif
Rem
Rem ----------------------------------- Build New -----------------------
Rem
If A$(Menu(0))=A$(19)
Gosub Message_entry(Mess_new%)
Endif
Rem
Rem ----------------------------------- Edit Existing -------------------
Rem
If A$(Menu(0))=A$(20)
Gosub Message_entry(Mess_edit%)
Endif
Rem
Rem ----------------------------------- Set Parameters ------------------
Rem
If A$(Menu(0))=A$(23)
Start_parameter:
Gosub Handle_dialog_1(Config_adr,0)
Gosub Handle_dialog_2(Config_adr,0,0)
Gosub Handle_dialog_3
Gosub State_sel(Word5%,Word25%,*Wordtemp%)
Gosub State_sel(Char5%,Char25%,*Chartemp%)
Gosub State_sel(Lttrs%,Mixed%,*P_intemp%)
Gosub State_sel(Pure%,Custom%,*C_outtemp%)
Gosub State_sel(From_a%,From_z%,*From_ltemp%)
Gosub State_sel(From_0%,From_9%,*From_ntemp%)
Gosub State_sel(From_ques%,From_slash%,*From_stemp%)
Gosub State_sel(To_a%,To_z%,*To_ltemp%)
Gosub State_sel(To_0%,To_9%,*To_ntemp%)
Gosub State_sel(To_ques%,To_slash%,*To_stemp%)
Rem
If Clicked%=Abort%
Gosub Reset_state(Wordtemp%,Wordspeed%)
Gosub Reset_state(Chartemp%,Charspeed%)
Gosub Reset_state(P_intemp%,Prac_input%)
Gosub Reset_state(C_outtemp%,Code_output%)
Gosub Reset_state(From_ltemp%,From_lttr%)
Gosub Reset_state(From_ntemp%,From_number%)
Gosub Reset_state(From_stemp%,From_symbol%)
Gosub Reset_state(To_ltemp%,To_lttr%)
Gosub Reset_state(To_ntemp%,To_number%)
Gosub Reset_state(To_stemp%,To_symbol%)
Else
Wordspeed%=Wordtemp%
Charspeed%=Chartemp%
Prac_input%=P_intemp%
Prac_output%=P_outtemp%
Code_output%=C_outtemp%
From_lttr%=From_ltemp%
From_number%=From_ntemp%
From_symbol%=From_stemp%
To_lttr%=To_ltemp%
To_number%=To_ntemp%
To_symbol%=To_stemp%
If To_lttr%<From_lttr%+47
Temp%=From_lttr%
From_lttr%=To_lttr%-47
To_lttr%=Temp%+47
Gosub Reset_state(From_ltemp%,From_lttr%)
Gosub Reset_state(To_ltemp%,To_lttr%)
Endif
If To_number%<From_number%+47
Temp%=From_number%
From_number%=To_number%-47
To_number%=Temp%+47
Gosub Reset_state(From_ntemp%,From_number%)
Gosub Reset_state(To_ntemp%,To_number%)
Endif
If To_symbol%<From_symbol%+47
Temp%=From_symbol%
From_symbol%=To_symbol%-47
To_symbol%=Temp%+47
Gosub Reset_state(From_stemp%,From_symbol%)
Gosub Reset_state(To_stemp%,To_symbol%)
Endif
If Code_output%=Custom%
If Wordspeed%>Charspeed%-7
Wordspeed%=Charspeed%-7
Gosub Reset_state(Wordtemp%,Wordspeed%)
Endif
Rate=Rate_table(Charspeed%-10)
Delay=Delay_table(Charspeed%-10,Wordspeed%-3)
Cust_flag%=Custom_flag(Charspeed%-10,Wordspeed%-3)
Else
Rate=Rate_table(Wordspeed%-3)
Delay=Rate
Cust_flag%=0
Endif
Lttr_seed%=From_lttr%+6
Lttr_rng%=To_lttr%-73-(From_lttr%-From_a%)
Number_seed%=From_number%-38
Number_rng%=To_number%-100-(From_number%-From_0%)
Symbol_seed%=From_symbol%-56
Symbol_rng%=To_symbol%-111-(From_symbol%-From_ques%)
Endif
Endif
Rem
Rem ----------------------------------- Receive Discourse ---------------
Rem
If A$(Menu(0))=A$(25)
If Msg_num%=0
Alert 1,"|No Discourse|Available.",1," OK ",Dummy
Goto Receive_done
Endif
On Menu Button 2,1,1 Gosub Mouse_interrupt
Msg%=1
Repeat
Interrupt!=False
Text 70,67*Res%," "
Text 64,74*Res%," "
Text 531,67*Res%," "
Text 519,74*Res%," "
Text 53,67*Res%,"Left-Click"
Text 62,74*Res%,"To Stop"
Text 523,67*Res%,"Left-Click"
Text 533,74*Res%,"To Stop"
Print At(11,5);String$(60," ")
Print At(36,5);"Get Ready!"
For Lag=1 To 10000
Next Lag
I%=1
While (Asc(Mid$(Message$(Msg%),I%,1))<>0)
If Asc(Mid$(Message$(Msg%),I%,1))>96
Mid$(Message$(Msg%),I%,1)=Chr$(Asc(Mid$(Message$(Msg%),I%,1))-32)
Endif
Buffer%(I%)=Asc(Mid$(Message$(Msg%),I%,1))-32
Inc I%
Wend
Print At(11,5);String$(60," ")
Print "p"
Print At(28,5);" Receiving Message... "
'
'
For Xmit%=1 To I%-1
On Menu
Exit If Interrupt!
If Buffer%(Xmit%)<>0
Gosub Key_code(Buffer%(Xmit%))
Else
Sound 1,0,#125,Delay*4
Endif
Next Xmit%
Text 53,67*Res%," "
Text 62,74*Res%," "
Text 523,67*Res%," "
Text 533,74*Res%," "
Print "q"
Print At(11,5);String$(60," ")
Print At(11,5);Message$(Msg%)
Text 70,67*Res%,"<ESC>"
Text 64,74*Res%,"To Exit"
Text 531,67*Res%,"<RETURN>"
Text 519,74*Res%,"Next Message"
A=Inp(2)
Exit If A=27
Inc Msg%
Until Msg%>Msg_num%
Text 70,67*Res%," "
Text 64,74*Res%," "
Text 531,67*Res%," "
Text 519,74*Res%," "
Print At(11,5);String$(60," ")
Print At(33,5);"No More Traffic"
For I=1 To 9000
Next I
Print At(11,5);String$(60," ")
Receive_done:
Endif
Rem
Rem ----------------------------------- Random Groupings ----------------
Rem
If A$(Menu(0))=A$(26)
On Menu Button 2,1,1 Gosub Mouse_interrupt
Print At(11,5);String$(60," ")
Print At(36,5);"Get Ready!"
For Lag=1 To 10000
Next Lag
If Prac_input%=Lttrs%
Seed%=Lttr_seed%
Range%=Lttr_rng%
Endif
If Prac_input%=Numbers%
Seed%=Number_seed%
Range%=Number_rng%
Endif
If Prac_input%=Symbols%
Seed%=Symbol_seed%
Range%=Symbol_rng%
Endif
For I%=1 To 50
If Prac_input%=Mixed%
Seed%=Lttr_seed%
Range%=Lttr_rng%
Chance%=Random(10)+1
If Chance%=7 Or Chance%=3
Seed%=Number_seed%
Range%=Number_rng%
Endif
If Chance%=5
Seed%=Symbol_seed%
Range%=Symbol_rng%
Endif
Endif
Chosen_char%=Random(Range%)+Seed%
If Chosen_char%=9
Chosen_char%=31
Endif
If Chosen_char%=10 Or Chosen_char%=11
Sub Chosen_char%,2
Endif
Buffer%(I%)=Chosen_char%
Next I%
Print At(11,5);String$(60," ")
Print "p"
Print At(28,5);" Receiving Message... "
Text 53,67*Res%,"Left-Click"
Text 62,74*Res%,"To Stop"
Text 523,67*Res%,"Left-Click"
Text 533,74*Res%,"To Stop"
Interrupt!=False
For Word%=0 To 9
For I%=1+Word%*5 To 5+Word%*5
On Menu
Exit If Interrupt!
Gosub Key_code(Buffer%(I%))
Next I%
Sound 1,0,#125,Delay*4
Exit If Interrupt!
Next Word%
Print "q"
Print At(11,5);
Text 53,67*Res%," "
Text 62,74*Res%," "
Text 523,67*Res%," "
Text 533,74*Res%," "
For I=1 To 50
Print Chr$(Buffer%(I)+32);
If I/5=Int(I/5)
Print " ";
Endif
Next I
Endif
Rem
Rem ----------------------------------- Key Practice --------------------
Rem
If A$(Menu(0))=A$(27)
Print At(11,5);String$(60," ")
Text 70,67*Res%,"<ESC>"
Text 64,74*Res%,"To Exit"
Text 522,67*Res%,"<LEFT> DIH"
Text 522,74*Res%,"<RIGHT> DAH"
Code$=""
K%=0
Init%=0
Count%=1
Print "e"
Print At(11,5);
Do
Button=Mousek
Key$=Inkey$
Exit If Asc(Key$)=27
If Button=1
Sound 1,15,#125,Rate
Sound 1,0,#125,Rate
Buffer%(K%)=1
Inc K%
Start=Timer
Char_flag%=0
Word_flag%=0
Init%=1
Endif
If Button=2
Sound 1,15,#125,3*Rate
Sound 1,0,#125,Rate
Buffer%(K%)=3
Inc K%
Start=Timer
Char_flag%=0
Word_flag%=0
Init%=1
Endif
Finish=Timer
Ticks=(Finish-Start)/4
If Ticks>2*Rate And Char_flag%=0 And Init%=1
Char%=0
Search:
If Char%<65
Didah%=0
While (Didah%<=K%)
If Buffer%(Didah%)=A%(Char%,Didah%)
Inc Didah%
Else
Inc Char%
Goto Search
Endif
Wend
Print Chr$(Char%+32);
Else
Print Chr$(32);
Endif
Char_flag%=1
Inc Count%
K%=0
For I%=0 To 6
Buffer%(I%)=0
Next I%
Endif
If Ticks>6*Rate And Word_flag%=0 And Init%=1
Print Chr$(32);
Inc Count%
Word_flag%=1
Endif
If Count%=61
Count%=1
Print "f"
Print At(11,5);String$(60," ")
Print At(11,5);
Print "e";
Endif
Loop
Print "f"
Print At(11,5);String$(60," ")
Text 46,67*Res%," "
Text 43,74*Res%," "
Text 522,67*Res%," "
Text 522,74*Res%," "
Endif
Rem
Rem ----------------------------------- Morse Code Table ----------------
Rem
If A$(Menu(0))=A$(30)
Gosub Handle_dialog_1(Morse_table_adr,0)
Gosub Handle_dialog_2(Morse_table_adr,0,0)
Gosub Handle_dialog_3
Endif
Rem
Rem ----------------------------------- Q Signals -----------------------
Rem
If A$(Menu(0))=A$(31)
Gosub Handle_dialog_1(Help_adr,0)
Q1:
Print At(36,5);Qs1$
Print At(25,8);Qs2$
Print At(25,9);Qs3$
Print At(25,10);Qs4$
Print At(25,11);Qs5$
Print At(25,12);Qs6$
Print At(25,14);Qs7$
Print At(25,15);Qs8$
Print At(25,16);Qs9$
Print At(25,18);Qs10$
Print At(25,19);Qs11$
Gosub Handle_dialog_2(Help_adr,0,1)
If Clicked%=Help_abort%
Goto Q_done
Endif
If Clicked%=Help_prev%
Goto Q6
Endif
Q2:
Print At(36,5);Qs1$
Print At(25,8);Qs12$
Print At(25,9);Qs13$
Print At(25,10);Qs14$
Print At(25,11);Qs15$
Print At(25,12);Qs16$
Print At(25,13);Qs17$
Print At(25,14);Qs18$
Print At(25,15);Qs19$
Print At(25,16);Qs20$
Print At(25,17);Qs21$
Gosub Handle_dialog_2(Help_adr,0,1)
If Clicked%=Help_abort%
Goto Q_done
Endif
If Clicked%=Help_prev%
Goto Q1
Endif
Q3:
Print At(36,5);Qs1$
Print At(25,8);Qs22$
Print At(25,9);Qs23$
Print At(25,10);Qs24$
Print At(25,11);Qs25$
Print At(25,12);Qs26$
Print At(25,13);Qs27$
Print At(25,14);Qs28$
Print At(25,15);Qs29$
Print At(25,16);Qs30$
Print At(25,17);Qs31$
Print At(25,18);Qs32$
Gosub Handle_dialog_2(Help_adr,0,1)
If Clicked%=Help_abort%
Goto Q_done
Endif
If Clicked%=Help_prev%
Goto Q2
Endif
Q4:
Print At(36,5);Qs1$
Print At(25,8);Qs33$
Print At(25,9);Qs34$
Print At(25,10);Qs35$
Print At(25,11);Qs36$
Print At(25,12);Qs37$
Print At(25,13);Qs38$
Print At(25,14);Qs39$
Print At(25,15);Qs40$
Print At(25,16);Qs41$
Print At(25,17);Qs42$
Print At(25,18);Qs43$
Gosub Handle_dialog_2(Help_adr,0,1)
If Clicked%=Help_abort%
Goto Q_done
Endif
If Clicked%=Help_prev%
Goto Q3
Endif
Q5:
Print At(36,5);Qs1$
Print At(25,8);Qs44$
Print At(25,9);Qs45$
Print At(25,10);Qs46$
Print At(25,11);Qs47$
Print At(25,12);Qs48$
Print At(25,13);Qs49$
Print At(25,14);Qs50$
Print At(25,15);Qs51$
Print At(25,16);Qs52$
Print At(25,17);Qs53$
Print At(25,18);Qs54$
Gosub Handle_dialog_2(Help_adr,0,1)
If Clicked%=Help_abort%
Goto Q_done
Endif
If Clicked%=Help_prev%
Goto Q4
Endif
Q6:
Print At(36,5);Qs1$
Print At(25,8);Qs55$
Print At(25,9);Qs56$
Print At(25,10);Qs57$
Print At(25,11);Qs58$
Print At(25,12);Qs59$
Print At(25,13);Qs60$
Print At(25,14);Qs61$
Print At(25,15);Qs62$
Print At(25,16);Blank$
Print At(25,17);Blank$
Print At(25,18);Blank$
Gosub Handle_dialog_2(Help_adr,0,1)
If Clicked%=Help_abort%
Goto Q_done
Endif
If Clicked%=Help_prev%
Goto Q5
Endif
Q_done:
Gosub Handle_dialog_3
Endif
Rem
Rem ----------------------------------- RST System ----------------------
Rem
If A$(Menu(0))=A$(32)
Gosub Handle_dialog_1(Help_adr,0)
R1:
Print At(36,5);Rst1$
Print At(25,8);Rst2$
Print At(25,9);Rst3$
Print At(25,10);Rst4$
Print At(25,11);Rst5$
Print At(25,12);Rst6$
Print At(25,13);Rst7$
Print At(25,15);Rst8$
Print At(25,16);Rst9$
Print At(25,17);Rst10$
Gosub Handle_dialog_2(Help_adr,0,1)
If Clicked%=Help_abort%
Goto R_done
Endif
If Clicked%=Help_prev%
Goto R4
Endif
R2:
Print At(36,5);Rst1$
Print At(25,10);Rst11$
Print At(25,12);Rst12$
Print At(25,13);Rst13$
Print At(25,14);Rst14$
Print At(25,15);Rst15$
Print At(25,16);Rst16$
Gosub Handle_dialog_2(Help_adr,0,1)
If Clicked%=Help_abort%
Goto R_done
Endif
If Clicked%=Help_prev%
Goto R1
Endif
R3:
Print At(36,5);Rst1$
Print At(25,8);Rst17$
Print At(25,10);Rst18$
Print At(25,11);Rst19$
Print At(25,12);Rst20$
Print At(25,13);Rst21$
Print At(25,14);Rst22$
Print At(25,15);Rst23$
Print At(25,16);Rst24$
Print At(25,17);Rst25$
Print At(25,18);Rst26$
Gosub Handle_dialog_2(Help_adr,0,1)
If Clicked%=Help_abort%
Goto R_done
Endif
If Clicked%=Help_prev%
Goto R2
Endif
R4:
Print At(36,5);Rst1$
Print At(25,8);Rst27$
Print At(25,10);Rst28$
Print At(25,11);Rst29$
Print At(25,12);Rst30$
Print At(25,13);Rst31$
Print At(25,14);Rst32$
Print At(25,15);Rst33$
Print At(25,16);Rst34$
Print At(25,17);Rst35$
Print At(25,18);Rst36$
Gosub Handle_dialog_2(Help_adr,0,1)
If Clicked%=Help_abort%
Goto R_done
Endif
If Clicked%=Help_prev%
Goto R3
Endif
R_done:
Gosub Handle_dialog_3
Endif
Rem
Rem ----------------------------------- Abbreviations -------------------
Rem
If A$(Menu(0))=A$(33)
Gosub Handle_dialog_1(Help_adr,0)
A1:
Print At(34,5);Abbr1$
Print At(25,8);Abbr2$
Print At(25,9);Abbr3$
Print At(25,10);Abbr4$
Print At(25,11);Abbr5$
Print At(25,13);Abbr6$
Print At(25,14);Abbr7$
Print At(25,15);Abbr8$
Print At(25,16);Abbr9$
Print At(25,17);Abbr10$
Print At(25,18);Abbr11$
Gosub Handle_dialog_2(Help_adr,0,1)
If Clicked%=Help_abort%
Goto A_done
Endif
If Clicked%=Help_prev%
Goto A10
Endif
A2:
Print At(34,5);Abbr1$
Print At(25,8);Abbr12$
Print At(25,9);Abbr13$
Print At(25,10);Abbr14$
Print At(25,11);Abbr15$
Print At(25,12);Abbr16$
Print At(25,13);Abbr17$
Print At(25,14);Abbr18$
Print At(25,15);Abbr19$
Print At(25,16);Abbr20$
Print At(25,17);Abbr21$
Print At(25,18);Abbr22$
Print At(25,19);Abbr23$
Gosub Handle_dialog_2(Help_adr,0,1)
If Clicked%=Help_abort%
Goto A_done
Endif
If Clicked%=Help_prev%
Goto A1
Endif
A3:
Print At(34,5);Abbr1$
Print At(25,8);Abbr24$
Print At(25,9);Abbr25$
Print At(25,10);Abbr26$
Print At(25,11);Abbr27$
Print At(25,12);Abbr28$
Print At(25,13);Abbr29$
Print At(25,14);Abbr30$
Print At(25,15);Abbr31$
Print At(25,16);Abbr32$
Print At(25,17);Abbr33$
Print At(25,18);Abbr34$
Print At(25,19);Abbr35$
Gosub Handle_dialog_2(Help_adr,0,1)
If Clicked%=Help_abort%
Goto A_done
Endif
If Clicked%=Help_prev%
Goto A2
Endif
A4:
Print At(34,5);Abbr1$
Print At(25,8);Abbr36$
Print At(25,9);Abbr37$
Print At(25,10);Abbr38$
Print At(25,11);Abbr39$
Print At(25,12);Abbr40$
Print At(25,13);Abbr41$
Print At(25,14);Abbr42$
Print At(25,15);Abbr43$
Print At(25,16);Abbr44$
Print At(25,17);Abbr45$
Print At(25,18);Abbr46$
Print At(25,19);Abbr47$
Gosub Handle_dialog_2(Help_adr,0,1)
If Clicked%=Help_abort%
Goto A_done
Endif
If Clicked%=Help_prev%
Goto A3
Endif
A5:
Print At(34,5);Abbr1$
Print At(25,8);Abbr48$
Print At(25,9);Abbr49$
Print At(25,10);Abbr50$
Print At(25,11);Abbr51$
Print At(25,12);Abbr52$
Print At(25,13);Abbr53$
Print At(25,14);Abbr54$
Print At(25,15);Abbr55$
Print At(25,16);Abbr56$
Print At(25,17);Abbr57$
Print At(25,18);Abbr58$
Print At(25,19);Abbr59$
Gosub Handle_dialog_2(Help_adr,0,1)
If Clicked%=Help_abort%
Goto A_done
Endif
If Clicked%=Help_prev%
Goto A4
Endif
A6:
Print At(34,5);Abbr1$
Print At(25,8);Abbr60$
Print At(25,9);Abbr61$
Print At(25,10);Abbr62$
Print At(25,11);Abbr63$
Print At(25,12);Abbr64$
Print At(25,13);Abbr65$
Print At(25,14);Abbr66$
Print At(25,15);Abbr67$
Print At(25,16);Abbr68$
Print At(25,17);Abbr69$
Print At(25,18);Abbr70$
Print At(25,19);Abbr71$
Gosub Handle_dialog_2(Help_adr,0,1)
If Clicked%=Help_abort%
Goto A_done
Endif
If Clicked%=Help_prev%
Goto A5
Endif
A7:
Print At(34,5);Abbr1$
Print At(25,8);Abbr72$
Print At(25,9);Abbr73$
Print At(25,10);Abbr74$
Print At(25,11);Abbr75$
Print At(25,12);Abbr76$
Print At(25,13);Abbr77$
Print At(25,14);Abbr78$
Print At(25,15);Abbr79$
Print At(25,16);Abbr80$
Print At(25,17);Abbr81$
Print At(25,18);Abbr82$
Print At(25,19);Abbr83$
Gosub Handle_dialog_2(Help_adr,0,1)
If Clicked%=Help_abort%
Goto A_done
Endif
If Clicked%=Help_prev%
Goto A6
Endif
A8:
Print At(34,5);Abbr1$
Print At(25,8);Abbr84$
Print At(25,9);Abbr85$
Print At(25,10);Abbr86$
Print At(25,11);Abbr87$
Print At(25,12);Abbr88$
Print At(25,13);Abbr89$
Print At(25,14);Abbr90$
Print At(25,15);Abbr91$
Print At(25,16);Abbr92$
Print At(25,17);Abbr93$
Print At(25,18);Abbr94$
Print At(25,19);Abbr95$
Gosub Handle_dialog_2(Help_adr,0,1)
If Clicked%=Help_abort%
Goto A_done
Endif
If Clicked%=Help_prev%
Goto A7
Endif
A9:
Print At(34,5);Abbr1$
Print At(25,8);Abbr96$
Print At(25,9);Abbr97$
Print At(25,10);Abbr98$
Print At(25,11);Abbr99$
Print At(25,12);Abbr100$
Print At(25,13);Abbr101$
Print At(25,14);Abbr102$
Print At(25,15);Abbr103$
Print At(25,16);Abbr104$
Print At(25,17);Abbr105$
Print At(25,18);Abbr106$
Print At(25,19);Abbr107$
Gosub Handle_dialog_2(Help_adr,0,1)
If Clicked%=Help_abort%
Goto A_done
Endif
If Clicked%=Help_prev%
Goto A8
Endif
A10:
Print At(34,5);Abbr1$
Print At(25,8);Abbr108$
Print At(25,9);Abbr109$
Print At(25,10);Abbr110$
Print At(25,11);Abbr111$
Print At(25,12);Abbr112$
Print At(25,13);Abbr113$
Print At(25,14);Abbr114$
Gosub Handle_dialog_2(Help_adr,0,1)
If Clicked%=Help_abort%
Goto A_done
Endif
If Clicked%=Help_prev%
Goto A9
Endif
A_done:
Gosub Handle_dialog_3
Endif
Menu Off
Return
Rem **********************************************************************
Rem * KEY CODE *
Rem **********************************************************************
Rem
Procedure Key_code(Char%)
Element%=0
Repeat
Dur%=A%(Char%,Element%)
Inc Element%
Sound 1,15,#125,Dur%*Rate
Sound 1,0,#125,Rate
Until Dur%=0
Sound 1,0,#125,Delay*2+Cust_flag%
Return
Rem
Rem **********************************************************************
Rem * MESSAGE ENTRY *
Rem **********************************************************************
Rem
Procedure Message_entry(Flag%)
Msg%=1
Text 70,67*Res%,"<ESC>"
Text 61,74*Res%,"To Abort"
Text 531,67*Res%,"<RETURN>"
Text 519,74*Res%,"Next Message"
Entry_start:
Print At(11,5);String$(60,"_");
If Flag%=Mess_new%
If Msg_num%=5
Alert 1,"Discourse Buffer Full.",1," OK ",Dummy
Goto Entry_exit
Else
Inc Msg_num%
Msg%=Msg_num%
Endif
Else
If Msg%>Msg_num%
Alert 1,"No More Messages|To Edit.",1," OK ",Dummy
Goto Entry_exit
Else
Print At(11,5);Message$(Msg%);
Endif
Endif
Mess$=Message$(Msg%)
Temp_mess$=Mess$
Msg_char%=1
Print "e";
Print At(11,5);
Repeat
A=Inp(2)
If (A=205 And Msg_char%=<Len(Mess$)) Or ((A>31 And A<123) And Msg_char%<60)
If A>31 And A<123
If Len(Mess$)<60
Mess$=Mess$+Chr$(A)
Endif
Print Chr$(A);
If Msg_char%<Len(Mess$)-1
For Push%=Len(Mess$) Downto Msg_char%+1
Mid$(Mess$,Push%,1)=Mid$(Mess$,Push%-1,1)
Next Push%
Mid$(Mess$,Msg_char%,1)=Chr$(A)
Print At(11+Msg_char%,5);Right$(Mess$,Len(Mess$)-Msg_char%);
Endif
Endif
Inc Msg_char%
Goto Entry_done
Endif
If ((A=203 Or A=8) And Msg_char%>1) Or A=127
If A=8 Or A=127
If A=127 And Msg_char%=<Len(Mess$)
For Pull%=Msg_char% To Len(Mess$)-1
Mid$(Mess$,Pull%,1)=Mid$(Mess$,Pull%+1,1)
Next Pull%
Temp$=Left$(Mess$,Len(Mess$)-1)
Mess$=""
Mess$=Temp$
Print At(11,5);Mess$;"_";
Goto Entry_done
Endif
If A=8
If Msg_char%<Len(Mess$)
For Pull%=Msg_char% To Len(Mess$)
Mid$(Mess$,Pull%-1,1)=Mid$(Mess$,Pull%,1)
Next Pull%
Endif
Temp$=Left$(Mess$,Len(Mess$)-1)
Mess$=""
Mess$=Temp$
Print At(11,5);Mess$;"_";
Dec Msg_char%
Endif
Else
Dec Msg_char%
Endif
Endif
Entry_done:
Print "e";
Print At(10+Msg_char%,5);
Until A=13 Or A=27
If A=27 And Flag%=Mess_new%
Mess$=""
Endif
If A=27 And Flag%=Mess_edit%
Mess$=Temp_mess$
Endif
Message$(Msg%)=Mess$
If Message$(Msg%)=""
For I%=Msg% To 4
Message$(I%)=Message$(I%+1)
Next I%
Message$(5)=""
Dec Msg_num%
Else
Inc Msg%
Endif
If A=13
Goto Entry_start
Endif
Entry_exit:
Print "f";
Print At(11,5);String$(60," ");
Text 70,67*Res%," "
Text 61,74*Res%," "
Text 531,67*Res%," "
Text 519,74*Res%," "
Return
Rem
Rem **********************************************************************
Rem * HELP INIT *
Rem **********************************************************************
Rem
Procedure Help_init
Qs1$="Q SIGNALS"
Qs2$="Q Signals give hams an avenue"
Qs3$="of communication which allows"
Qs4$="the use of short three-letter"
Qs5$="words to replace frequently"
Qs6$="used phrases."
Qs7$=" These signals can also serve"
Qs8$="as questions if they are sent"
Qs9$="followed by a question mark."
Qs10$=" Inceased speed of traffic is"
Qs11$="the greatest benefit offered."
Rem
Qs12$="QRG Exact Frequency"
Qs13$="QRH Frequency Varies"
Qs14$="QRI Tone of Transmission"
Qs15$=" 1. Good 2. Variable"
Qs16$=" 3. Bad"
Qs17$="QRK Signal Intelligibility"
Qs18$=" 1. Bad 2. Poor"
Qs19$=" 3. Fair 4. Good"
Qs20$=" 5. Excellent"
Qs21$="QRL Busy"
Rem
Qs22$="QRM Transmission Interference"
Qs23$=" 1. None 2. Slight"
Qs24$=" 3. Moderate 4. Severe"
Qs25$=" 5. Extreme"
Qs26$="QRN Transmission Static"
Qs27$=" (1-5 as in QRM)"
Qs28$="QRO Increase Power"
Qs29$="QRP Decrease Power"
Qs30$="QRQ Send Faster"
Qs31$="QRS Send Slower"
Qs32$="QRT Stop Sending"
Rem
Qs33$="QRV Ready"
Qs34$="QRW Inform of Calling"
Qs35$="QRX Call Again"
Qs36$="QRY Number of Turn"
Qs37$="QRZ Call"
Qs38$="QSA Signal Strength"
Qs39$=" 1. Very Weak 2. Weak"
Qs40$=" 3. Fair 4. Good"
Qs41$=" 5. Very Good"
Qs42$="QSB Signal Fading"
Qs43$="QSD Keying Defective"
Rem
Qs44$="QSG Send # Messages at a Time"
Qs45$="QSK Break In"
Qs46$="QSL Acknowledge Receipt"
Qs47$="QSM Repeat Message"
Qs48$="QSN Traffic Heard"
Qs49$="QSO Communicate With"
Qs50$="QSP Relay To"
Qs51$="QST CQ ARRL"
Qs52$="QSU Send or Reply"
Qs53$="QSV Send a Series of V's"
Qs54$="QSW Send on Frequency"
Rem
Qs55$="QSX Listen on Frequency"
Qs56$="QSY Change Frequency"
Qs57$="QSZ Send More Than Once"
Qs58$="QTA Cancel Message Number"
Qs59$="QTB Word Count Disagreement"
Qs60$="QTC # of Messages to Send"
Qs61$="QTH Location is"
Qs62$="QTR Correct Time is"
Rem
Rst1$="RST SYSTEM"
Rst2$=" The RST system provides the"
Rst3$="Ham operator with a method of"
Rst4$="relaying to a contact the quality"
Rst5$="of any transmitted signal. The"
Rst6$="letters in 'RST' each have the"
Rst7$="following interpretations."
Rst8$="(R)eadability"
Rst9$="(S)trength"
Rst10$="(T)one"
Rem
Rst11$="Readability:"
Rst12$=" 1 - Unreadable"
Rst13$=" 2 - Barely Readable"
Rst14$=" 3 - Readable, Much Difficulty"
Rst15$=" 4 - Readable, Little Difficulty"
Rst16$=" 5 - Perfectly Readable"
Rem
Rst17$="Signal Strength:"
Rst18$=" 1 - Faint"
Rst19$=" 2 - Very Weak"
Rst20$=" 3 - Weak"
Rst21$=" 4 - Fair"
Rst22$=" 5 - Fairly Good"
Rst23$=" 6 - Good"
Rst24$=" 7 - Moderately Strong"
Rst25$=" 8 - Strong"
Rst26$=" 9 - Extremely Strong"
Rem
Rst27$="Tone:"
Rst28$=" 1 - Sixty-Cycle AC"
Rst29$=" 2 - Very Rough AC"
Rst30$=" 3 - Rough AC"
Rst31$=" 4 - Rough Note"
Rst32$=" 5 - Strong Ripple-Modulated"
Rst33$=" 6 - Trace of Ripple-Modulation"
Rst34$=" 7 - Nearly Pure"
Rst35$=" 8 - Nearly Perfect"
Rst36$=" 9 - Perfect"
Rem
Abbr1$="ABBREVIATIONS"
Abbr2$=" Abbreviations allow the Ham"
Abbr3$="operator to communicate with"
Abbr4$="others using very short and"
Abbr5$="intuitive letter combinations."
Abbr6$=" Following is a list of the"
Abbr7$="most commonly used abbreviations."
Abbr8$="It is possible to cut down the"
Abbr9$="time necessary to import your"
Abbr10$="ideas using these. But be sure"
Abbr11$="your contact knows them too!"
Rem
Abbr12$="AA All After"
Abbr13$="AB All Before"
Abbr14$="ABT About"
Abbr15$="ADR Address"
Abbr16$="AGN Again"
Abbr17$="ANT Antenna"
Abbr18$="BCI Broadcast Interference"
Abbr19$="BCL Broadcast Listener"
Abbr20$="BK Break"
Abbr21$="BN All Between"
Abbr22$="BUG Semi-Automatic Key"
Abbr23$="B4 Before"
Rem
Abbr24$="C Yes"
Abbr25$="CFM Confirm"
Abbr26$="CK Check"
Abbr27$="CL Closing; Call"
Abbr28$="CLD Called"
Abbr29$="CLG Calling"
Abbr30$="CQ Calling Any Station"
Abbr31$="CUD Could"
Abbr32$="CUL See You Later"
Abbr33$="CW Continuous Wave"
Abbr34$="DE From, This is"
Abbr35$="DLD-DLVD Delivered"
Rem
Abbr36$="DR Dear"
Abbr37$="DX Distance"
Abbr38$="ES And"
Abbr39$="FB Fine Business"
Abbr40$="FM Frequency Modulation"
Abbr41$="GA Go Ahead"
Abbr42$="GB Good-Bye"
Abbr43$="GBA Give Better Address"
Abbr44$="GE Good Evening"
Abbr45$="GG Going"
Abbr46$="GM Good Morning"
Abbr47$="GN Good Night"
Rem
Abbr48$="GND Ground"
Abbr49$="GUD Good"
Abbr50$="HI Telegraph laugh; High"
Abbr51$="HR Here; Hear"
Abbr52$="HV Have"
Abbr53$="HW How"
Abbr54$="LID Poor Operator"
Abbr55$="MA-MILS Milliamperes"
Abbr56$="MSG Message"
Abbr57$="N No"
Abbr58$="NCS Net Control Station"
Abbr59$="ND Nothing Doing"
Rem
Abbr60$="NIL Nothing"
Abbr61$="NM No More"
Abbr62$="NR Number"
Abbr63$="NW Now; I Resume"
Abbr64$="OB Old Boy"
Abbr65$="OC Old Chap"
Abbr66$="OM Old Man"
Abbr67$="OP-OPR Operator"
Abbr68$="OT Old Timer"
Abbr69$="PBL Preamble"
Abbr70$="PSE Please"
Abbr71$="PWR Power"
Rem
Abbr72$="PX Press"
Abbr73$="R Are; Received"
Abbr74$="RCD Received"
Abbr75$="RCVR-RX Receiver"
Abbr76$="REF Refer"
Abbr77$="RFI Radio Frq Interference"
Abbr78$="RIG Station Equipment"
Abbr79$="RPT Repeat"
Abbr80$="RTTY Radioteletype"
Abbr81$="SASE Self-Addr Stamped Env"
Abbr82$="SED Said"
Abbr83$="SIG Signal; Signature"
Rem
Abbr84$="SINE Initials, Nickname"
Abbr85$="SKED Schedule"
Abbr86$="SRI Sorry"
Abbr87$="SSB Single Sideband"
Abbr88$="SVC Service"
Abbr89$="T Zero"
Abbr90$="TFC Traffic"
Abbr91$="TMW Tomorrow"
Abbr92$="TNX-TKS Thanks"
Abbr93$="TT That"
Abbr94$="TU Thank You"
Abbr95$="TVI TV Interference"
Rem
Abbr96$="TX Transmitter"
Abbr97$="TXT Text"
Abbr98$="UR-URS Your; You're; Yours"
Abbr99$="VFO Variable- Freq Osc"
Abbr100$="VY Very"
Abbr101$="WA Word After"
Abbr102$="WB Word Before"
Abbr103$="WD-WDS Word; Words"
Abbr104$="WKD-WKG Worked; Working"
Abbr105$="WL Well; Will"
Abbr106$="WUD Would"
Abbr107$="WX Weather"
Rem
Abbr108$="XCVR Transceiver"
Abbr109$="XMTR Transmitter"
Abbr110$="XTAL Crystal"
Abbr111$="XYL-YF Wife"
Abbr112$="YL Young Lady"
Abbr113$="73 Best Regards"
Abbr114$="88 Love and Kisses"
Rem
Return
'
Procedure Mouse_interrupt
Interrupt!=True
Return